本系列文章從 Web API, 架設雲端 VM,資料庫操作到前端 app,一步一步做出一個雖然很陽春但是完整可運作的網站。雖然每個部份實做的東西都很少,但是許多網站的基本功能其實就這麼簡單,改變一點畫面跟資料處理邏輯就能做出很多功能。當然,比較進階的網站會需要更多的技術與知識,但是只要熟悉這些基本,要再自學精進絕對不是問題。
初衷
筆者當時寫這篇文章的目的本來就不在介紹高深的技術,目標只有一步一步做出整個網站,讓讀者大概知道網站的各個部分在做什麼事。但是,筆者因為時間與心力的不足,一直沒有在實作的過程中一起介紹這個領域需要什麼樣的技術或人格特質,也就是說,當初所希望的「讓讀者找出有興趣的領域,並專精學習它」的目的並沒有實現,今天,我們就用最後一篇總結來聊聊,寫網站的時候,在這四個領域分別適合什麼樣的人、需要什麼樣的技能。不過,這裡還是要再次強調,這些只是筆者的自身經驗,每個人所遇到的環境、團隊不盡相同,可能無法反映每個職缺的真實現況。
工作內容
-
主機/雲端 VM
- 管理主機/VM 必須對作業系統(Windows Server, Linux, 等等)相當熟悉,因為網站所在的系統的穩定度及效能與作業系統的設定、調校有高度的相關。筆者曾經有某一支程式怎麼跑都扛不了 100 qps 的流量,公司的 SE 貼給我一串 Linux 指令換一下設定,馬上順暢無比 400 qps 都還順順的。另外,由於現在非常多的服務都會上雲端,所以也必須對於雲端系統有一定程度的了解,例如 GCP, AWS, Azure 的設定與使用。
當然 400 qps 在大型系統中是個笑話,筆者只是想強調管理主機的工作需要對作業系統很熟悉。
- 這個領域適合喜歡鑽研底層技術的人,需要多充實作業系統、網路協定與安全性相關的知識。
-
API 程式
-
撰寫 API 程式特別注重兩個地方:軟體架構與效能。API 程式與前端頁面一樣常常需要修改與擴充,不良的軟體架構會讓技術債快速的累積,並讓以後的除錯與功能擴充變成惡夢。效能方面,由於 API 程式可能會需要服務短時間高量的網路請求,所以在寫 API 的時候同時要考慮程式的執行效率,必須審慎的思考程式的執行流程,在不破壞軟體架構的條件下盡量的提升速度。
-
這個領域適合喜歡「設計程式」的人,如何設計一個好的架構、如何設計好的演算過程,讓程式跑得又快又好、別人又容易使用。這個領域需要多學習軟體工程與演算法的知識。
-
資料庫
- 操作資料庫極度講究正確性與效能,作為資料中心,只要這邊的資料有誤,整個系統就全部都錯,而且因為所有有關資料的操作都在這,必須要對資料庫的語法及資料庫引擎的運作非常熟悉,如此才有辦法寫出高效能的 SQL 指令。因此,操作資料庫的人首先要細心,因為絕大部分的資料只要有一個地方錯誤,就會汙染與他相關的資料,或者多一個零少一個零都會出大事。
- 這個領域適合心思細膩而且有耐心的人,需要學的東西比較專一,就是資料庫引擎跟他的語法。
-
前端 App
- 寫前端 App 主要注重軟體架構與溝通能力,隨著前端 app 越來越大越來越複雜,沒有良好的架構很容易改不動程式或者越來越容易出 bug,或者之前做的東西無法重複利用,這些都會大大的阻礙前端 app 的開發、擴展。溝通方面,因為前端 app 直接接觸使用者,所以非常多的時候需要與使用者溝通,根據使用者的喜好做頁面與設計使用體驗。
唔...其實還要有好脾氣,無理取鬧的使用者比比皆是
- 由於前端 app 還需要有美感的呈現,如果團隊裡沒有設計師,而且連外包都沒有,那這時候還會需要一點美學的基礎,除非這個 app 只是給內部用的,而且別的部門也能接受完全沒有美學的工程師頁面。
- 這個領域適合喜歡有視覺回饋的人,因為前端 app 是整個網站中唯一有視覺呈現的部分,其他通通都是黑白的 console 輸出或資料表。這個領域需要很強的學習動能,需要一直學習新的 JS 框架或其他前端技術,因為前端技術的變化是所有領域中最快的,但相對的,對於效能與演算法比較不用那麼講究。
優缺點
上面說的是各個領域需要學習什麼、適合什麼興趣的人,這裡也來講一下四個領域的優缺點
- 主機/雲端 VM
- 優點 - 受人崇拜,因為 Linux, Windows, 網路協定、安全性這些都不是好學的東西,厲害的 SE 是受所有人景仰的
- 缺點 - 出事的時候很累,像是被 ddos 或莫名原因機器掛掉,所有的服務都會中斷,這時候壓力會全在管理主機的人身上
- API 程式
- 優點 - 成就感很高,寫出好擴充、好維護、效能又挺過公司最高峰流量的時候,真的只有一個爽字了得
- 缺點 - 被壓時程的時候會很崩潰,被迫用爛架構寫糞 code,然後再被指責為什麼寫不好
- 資料庫
- 優點 - 首先是「掌握 DB 的人就掌握公司命脈」,越能接觸到核心資料越容易有高薪。第二個也很重要:有妹子!不知道為什麼,滿多女生很排斥寫 API,但是寫 SQL 就 OK
- 缺點 - 出包的時候,受到的懲罰比其他三個領域都嚴重
- 前端 App
- 優點 - 首先是職缺多,現在前端需求越來越大,職缺非常的多,大公司開出的薪水也已經跟後端平起平坐。第二個一樣很重要:有妹子!更多的妹子!筆者待過的工作環境中,做主機/VM 管理與寫 API 的女性同事人數為 零,資料庫為 2,前端為 4。
- 缺點 - 技術演進太快,甚至有可能去年學的一個新技術,今年就被淘汰,需要不斷不斷地學習新技術。再來是如果被壓時程,與 API 程式一樣會很崩潰,更糟的是還要受使用者/客戶的氣
Say Good Bye
好不容易終於把本系列撐完了,希望這一點點的淺薄內容,能給正在觀望不同領域的人有一絲絲些微的幫助,感謝每一個讀過本系列的邦友,祝大家學習順利工作開心,bye bye~